package org.example.test;

import java.util.concurrent.TimeUnit;

import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
//
//@Component
//@Aspect
//@Slf4j
//public class InterfaceLimitAspect {
//
//    @Autowired
//    private RedissonClient redissonClient;
//
//    @Autowired
//    private HttpServletRequest httpServletRequest;
//
//    @Pointcut(value = "execution(* com.test.controller.app.*Controller*.*(..))")
//    public void point() {
//    }
//
//    private final Integer INTERFACELIMITCOUNT = 10;
//    private final Integer INTERFACELIMITTIME = 10;
//    @Before("point()")
//    public void before() {
//        try {
//            String servletPath = httpServletRequest.getServletPath();
//                String ipAddr = IpUtil.getIpAddr(httpServletRequest);
//                RAtomicLong atomicLong = redissonClient.getAtomicLong(servletPath + ":" + ipAddr);
//                if (atomicLong.get() >= INTERFACELIMITCOUNT) {
//                    log.info("接口限流：{}", servletPath + ":" + ipAddr);
//                    throw new Exception("try later");
//                } else {
//                    atomicLong.incrementAndGet();
//                    if (atomicLong.get() == 1) {
//                        atomicLong.expire(INTERFACELIMITTIME,TimeUnit.HOURS);
//                    }
//                }
//        } catch (Exception e) {
//                log.error("接口限流异常", e);
//        }
//    }
//}